import "reflect-metadata";
import { createConnection, getRepository, Not, Like } from "typeorm";
//定义的实体类
import { User } from "./entity/User";
import { UserExtend } from './entity/UserExtend'
import { Posts } from './entity/Posts'
import { Tags } from './entity/Tags'
import { connect } from "net";
// 基本查询
// createConnection().then(async connection => {
//1--查所有
//  const userRepository = connection.getRepository(User)
//  const result = await userRepository.find()   
//  console.log(result);
//2--查部分字段
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({select:['id','username']})
// console.log(result);
//3--使用条件语句查询
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({where:{id:22}})
// console.log(result);
//4--使用多条件语句and关系查询
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({where:{password:'23134',isDel:1}})
// console.log(result);
//5--使用多条件or的关系查询
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({where:[{id:22},{password:117959}]})
// console.log(result);

//6--relations关系查询，需要先有外健关联关系
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({relations:['userDetail']})
// console.log(result);
//7--使用join关系查找,关联表查询
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({
//    join:{
//        alias:'user',
//        leftJoinAndSelect:{
//            detail:'user.userDetail',
//            posts:'user.posts'
//        }
//    }
// })
// console.log(JSON.stringify(result));
//8--order排序
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({
//     order:{
//         // id:'DESC',
//         id:'ASC',
//     }
// })
// console.log(result);
//9--分页,skip--偏移，take--查询多少条数据
// const userRepository = connection.getRepository(User)
// const result = await userRepository.find({
//     skip:2,
//     take:10
// })
// console.log(result);
// }).catch(error => console.log(error));

//进阶查询
// 1、Not 不包含
// 2、LessThan小于,一般用于数字
// 3、LessThanOrEqual小于或者等于
// 4、MoreThan大于
// 5、MoreThanOrEqual大于等于
// 6、Equal等于
// 7、Like模糊查询 xx: LIKE('%yy%')
// 8、Between两个范围之间xx: Between(1,10)
// 9、In在什么里面xx: In(['',''])
// 10、上面的可以多个组合起来一起使用
createConnection().then(async connection => {
    //1--排除查询
    // const userRepository = connection.getRepository(User)
    // const result = await userRepository.find({
    //     password: Not('23134')
    // })
    // console.log(result);
    //2--模糊查询
    const userRepository = connection.getRepository(User)
    const result = await userRepository.find({
        username:Like('ldx%')
    })
    console.log(result);
    
})